\documentclass[12pt,a4paper,openany]{book}

% XeLaTeX 中文支持设置
\usepackage{xeCJK}
\usepackage{fontspec}

% 使用系统可用的中文字体
\setCJKmainfont{Noto Serif CJK SC}[
  BoldFont=Noto Serif CJK SC Medium,
  AutoFakeSlant=true
]
\setCJKsansfont{Noto Sans CJK SC}
\setCJKmonofont{WenQuanYi Micro Hei Mono}

% 专业科技报告的全面前言
\usepackage{amsmath, amssymb, amsthm}
\usepackage[margin=2.5cm]{geometry}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{listings}
\usepackage[svgnames]{xcolor}
\usepackage{hyperref}
\usepackage{multicol}
% 加载algorithmicx以兼容现有代码
\usepackage{algorithm}
\usepackage{algpseudocode}

% 为某些章节中使用的algorithm2e命令定义兼容宏
\providecommand{\Input}[1]{\Require #1}
\providecommand{\Output}[1]{\Ensure #1}
\providecommand{\KwTo}{\textbf{ to }}
\providecommand{\tcp}[1]{\Comment{#1}}
\usepackage{longtable}
\usepackage{multirow}
\usepackage{enumerate}
\usepackage{subcaption}
\usepackage{float}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{fancyhdr}
\usepackage{setspace}
\usetikzlibrary{positioning,shapes.geometric,arrows,calc,patterns,decorations.pathmorphing,decorations.markings,trees}
\pgfplotsset{compat=1.17}

% 页面设置
\geometry{a4paper, left=2.5cm, right=2.5cm, top=2.5cm, bottom=2.5cm}
\setlength{\headheight}{15pt}

% Hyperref设置
\hypersetup{
colorlinks=true,
    linkcolor=blue,
    filecolor=magenta,
    urlcolor=cyan,
    citecolor=green,
    pdftitle={C++函数调用树分析：基于MCP的静态分析系统技术文档},
    pdfauthor={C++函数调用树分析开发团队},
    pdfsubject={静态代码分析、函数调用树、模型上下文协议、C++解析、软件架构},
    pdfkeywords={C++，静态分析，调用图，MCP，Clang AST，LibClang，代码分析，软件工程},
    pdfpagemode=UseOutlines
}

% 用于代码高亮的列表设置
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}

\lstdefinestyle{cpp}{
    backgroundcolor=\color{backcolour},   
    commentstyle=\color{codegreen},
    keywordstyle=\color{magenta},
    numberstyle=\tiny\color{codegray},
    stringstyle=\color{codepurple},
    basicstyle=\ttfamily\footnotesize,
    breakatwhitespace=false,         
    breaklines=true,                 
    captionpos=b,                    
    keepspaces=true,                 
    numbers=left,                    
    numbersep=5pt,                  
    showspaces=false,                
    showstringspaces=false,
    showtabs=false,                  
    tabsize=2,
    language=C++,
    extendedchars=true,
    inputencoding=utf8,
    literate={中}{{\CJKfamily{zhhei}中}}1 {文}{{\CJKfamily{zhhei}文}}1
}

\lstdefinestyle{python}{
    backgroundcolor=\color{backcolour},   
    commentstyle=\color{codegreen},
    keywordstyle=\color{magenta},
    numberstyle=\tiny\color{codegray},
    stringstyle=\color{codepurple},
    basicstyle=\ttfamily\footnotesize,
    breakatwhitespace=false,         
    breaklines=true,                 
    captionpos=b,                    
    keepspaces=true,                 
    numbers=left,                    
    numbersep=5pt,                  
    showspaces=false,                
    showstringspaces=false,
    showtabs=false,                  
    tabsize=2,
    language=Python,
    extendedchars=true,
    inputencoding=utf8,
    literate={中}{{\CJKfamily{zhhei}中}}1 {文}{{\CJKfamily{zhhei}文}}1
}

\lstset{style=cpp}

% 算法设置，适用于算法伪代码
% 使用内置命令：\State, \For, \If, \While等
% 定义try-catch块命令
\algnewcommand\algorithmictry{\textbf{try}}
\algnewcommand\algorithmicCatch{\textbf{catch}}
\algnewcommand\algorithmicendtry{\textbf{end try}}
\algnewcommand\Try{\algorithmictry}
\algnewcommand\Catch[1]{\algorithmicCatch\ #1}
\algnewcommand\EndTry{\algorithmicendtry}

% 定理环境
\theoremstyle{plain}
\newtheorem{theorem}{定理}[section]
\newtheorem{lemma}[theorem]{引理}
\newtheorem{proposition}[theorem]{命题}
\newtheorem{corollary}[theorem]{推论}

\theoremstyle{definition}
\newtheorem{definition}[theorem]{定义}
\newtheorem{algorithmdef}[theorem]{算法}
\newtheorem{example}[theorem]{示例}

\theoremstyle{remark}
\newtheorem{remark}[theorem]{备注}
\newtheorem{note}[theorem]{注释}

% 自定义命令，用于常见数学符号
\newcommand{\R}{\mathbb{R}}
\newcommand{\C}{\mathbb{C}}
\newcommand{\N}{\mathbb{N}}
\newcommand{\Z}{\mathbb{Z}}
\newcommand{\norm}[1]{\left\|#1\right\|}
\newcommand{\inner}[2]{\langle #1, #2 \rangle}
\newcommand{\set}[1]{\left\{#1\right\}}
\newcommand{\abs}[1]{\left|#1\right|}
\newcommand{\eps}{\varepsilon}
\newcommand{\bigO}[1]{\mathcal{O}(#1)}
\newcommand{\complexity}[1]{\Theta(#1)}

% 自定义命令，用于调用图表示法
\newcommand{\callgraph}{\mathcal{G}}
\newcommand{\functions}{\mathcal{F}}
\newcommand{\calls}{\mathcal{C}}
\newcommand{\nodes}{\mathcal{V}}
\newcommand{\edges}{\mathcal{E}}

% 页眉和页脚设置
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE]{\leftmark}
\fancyhead[RO]{\rightmark}
\fancyfoot[C]{\thepage}
\renewcommand{\headrulewidth}{0.4pt}

\begin{document}

% 封面页
\begin{titlepage}
\centering
\vspace*{2cm}

{\Huge\bfseries C++ 函数调用树分析}\\[0.5cm]
{\Large MCP 基于静态分析系统的技术文档}\\[2cm]

{\large\textbf{Development Team}}\\[0.5cm]
{\large C++ 函数调用树分析项目}\\[2cm]

% \includegraphics[width=0.3\textwidth]{placeholder_logo}\\[1cm]
% 注意：如有实际 logo，请替换

{\large \today}\\[2cm]

\vfill

{\large\textbf{Abstract}}\\[0.5cm]
\begin{minipage}{0.8\textwidth}
\centering
本技术报告全面介绍了 C++ 函数调用树分析系统，该系统是一个基于模型上下文协议（MCP）的高级服务器，专为 C/C++ 代码库的静态代码分析而设计。系统结合了多种解析方法，包括基于正则表达式的模式匹配和 Clang AST 分析，以生成详细的函数调用树，并对代码结构进行全面验证。本文档详细阐述了完整分析框架的技术规范、架构设计原则、算法基础及实现策略。
\end{minipage}

\vfill

\end{titlepage}

% 目录
\tableofcontents
\listoffigures
\listofalgorithms
\listoftables

\mainmatter

% 包含各章节
\include{chapters/ch1_introduction}
\include{chapters/ch2_architecture_design}
\include{chapters/ch3_parsing_engines}
\include{chapters/ch4_analysis_algorithms}
\include{chapters/ch5_validation_framework}
\include{chapters/ch6_mcp_integration}
\include{chapters/ch7_conclusions}

\end{document}
